package main

import (
	"digital/server/common"
	"digital/server/routes"
	_ "github.com/alexbrainman/odbc"
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"github.com/spf13/viper"
	"net/http"
	"os"
)

func main() {
	//初始化配置文件
	InitConfig()
	//初始化数据库连接
	db := common.InitDB()
	//程序退出时正确关闭数据库连接
	defer db.Close()
	//使用gin默认引擎进行路由管理
	r := gin.Default()
	//将"./server/image"目录下的所有文件映射到路由"/images"上，当用户访问该路由时，程序会返回指定目录下的文件内容
	r.StaticFS("/images", http.Dir("./server/image"))
	// 设置可信任的代理
	r.SetTrustedProxies([]string{"127.0.0.1"})
	//收集所有路由
	r = routes.CollectRouter(r)
	//启动服务，设置监听端口
	port := viper.GetString("server.port")
	if port != "" {
		panic(r.Run(":" + port))
	}
	panic(r.Run(":8080"))
}

// InitConfig 使用了viper库来读取YAML格式的配置文件
func InitConfig() {
	workDir, _ := os.Getwd()
	viper.SetConfigName("application")
	viper.SetConfigType("yml")
	viper.AddConfigPath(workDir + "/server/config")
	err := viper.ReadInConfig()
	if err != nil {
		panic(err)
	}
}
